<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" lang="zh" xml:lang="zh">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>任务描述符: 构造实施模型</title>
<meta content="TaskDescriptor" name="uma.type">
<meta content="structure_implementation_model" name="uma.name">
<meta content="构造实施模型" name="uma.presentationName">
<meta content="_aaGdwUocEdqrjq4i3fchvA" name="uma.guid">
<meta content="TaskDescriptor" name="element_type">
<meta content="description" name="filetype">
<meta name="role" content="软件设计人员">
<link type="text/css" href="./../../css/default.css" rel="StyleSheet">
<script language="JavaScript" type="text/javascript" src="./../../scripts/ContentPageResource.js"></script><script language="JavaScript" type="text/javascript" src="./../../scripts/ContentPageSection.js"></script><script language="JavaScript" type="text/javascript" src="./../../scripts/ContentPageSubSection.js"></script><script language="JavaScript" type="text/javascript" src="./../../scripts/ActivityTreeTable.js"></script><script language="JavaScript" type="text/javascript" src="./../../scripts/ProcessElementPage.js"></script><script language="JavaScript" type="text/javascript" src="./../../scripts/ContentPageToolbar.js"></script><script language="JavaScript" type="text/javascript" src="./../../scripts/contentPage.js"></script><script language="JavaScript" type="text/javascript" src="./../../scripts/processElementData.js"></script><script language="JavaScript" type="text/javascript">
					var defaultQueryStr = '?proc={002674F9-6511-4D15-8623-B761D8C48986}&path={002674F9-6511-4D15-8623-B761D8C48986},{F2160C54-F666-4736-9982-FC7F58F15FAD},_aaGdwUocEdqrjq4i3fchvA';
					var backPath = './../../';
					var imgPath = './../../images/';
					var nodeInfo=[{view: "view:_e_O28N7KEdm8G6yT7-Wdqw", path: ["_e_O28N7KEdm8G6yT7-Wdqw", "_vCtak0JHEdq4z9xc-r201w", "_vChNQkJHEdq4z9xc-r201w", "_vChNREJHEdq4z9xc-r201w", "_UNdM0CFtEdqrX8YVzvtlIg", "_aaGdwUocEdqrjq4i3fchvA"]}, {view: "view:_FCx1oN7CEdmsEI4YDGX2ag", path: ["_FCx1oN7CEdmsEI4YDGX2ag", "_PEpmMCVuEdqSZ9OimJ-AzA", "_-kFhcCVuEdqSZ9OimJ-AzA", "_pV4NgSFsEdqrX8YVzvtlIg", "_UNdM0CFtEdqrX8YVzvtlIg", "_aaGdwUocEdqrjq4i3fchvA"]}, {view: "view:_FCx1oN7CEdmsEI4YDGX2ag", path: ["_FCx1oN7CEdmsEI4YDGX2ag", "_e_O28N7KEdm8G6yT7-Wdqw", "_vCtak0JHEdq4z9xc-r201w", "_vChNQkJHEdq4z9xc-r201w", "_vChNREJHEdq4z9xc-r201w", "_UNdM0CFtEdqrX8YVzvtlIg", "_aaGdwUocEdqrjq4i3fchvA"]}];
					contentPage.preload(imgPath, backPath, nodeInfo, defaultQueryStr, true, true, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td valign="top">
<div id="page-guid" value="_aaGdwUocEdqrjq4i3fchvA"></div>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td nowrap="true" class="pageTitle">任务：构造实施模型</td><td width="100%">
<div id="contentPageToolbar" align="right"></div>
</td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td class="pageTitleSeparator"><img height="1" title="" alt="" src="./../../images/shim.gif"></td>
</tr>
</table>
<div class="overview">
<table cellpadding="0" cellspacing="0" border="0" width="97%">
<tr>
<td width="50"><img title="" alt="" src="./../../images/taskdes_lg_dgm32.gif"></td><td>
<table cellpadding="0" cellspacing="0" border="0" class="overviewTable">
<tr>
<td valign="top">此任务描述了如何根据实施子系统及其内容的分配职责来建立实施元素的结构。</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">关系</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr valign="top">
<th scope="row" class="sectionTableHeading">角色</th><td width="30%" class="sectionTableCell"><span class="sectionTableCellHeading">主要:
							</span>
<ul>
<li>
<a href="./../../core.base_rup/capabilitypatterns/rup_software_architect_8B6C5D41.html" guid="_COWYtRi2Edq_uI8xTPML6g">软件设计人员</a>
</li>
</ul>
</td><td width="30%" class="sectionTableCell"><span class="sectionTableCellHeading">其他:
							</span></td><td class="sectionTableCell"><span class="sectionTableCellHeading">辅助:
							</span></td>
</tr>
<tr valign="top">
<th scope="row" class="sectionTableHeading">输入</th><td width="30%" class="sectionTableCell"><span class="sectionTableCellHeading">必需:
								</span>
<ul>
<li>
<a href="./../../core.base_rup/capabilitypatterns/rup_design_model_84A35167.html" guid="_COWYtxi2Edq_uI8xTPML6g">设计模型</a>
</li>
</ul>
</td><td width="30%" class="sectionTableCell"><span class="sectionTableCellHeading">可选:
								</span>
<ul>
<li>
<a href="./../../core.base_rup/capabilitypatterns/rup_supplementary_specification_4FFE3F60.html" guid="_COWYuRi2Edq_uI8xTPML6g">补充规范</a>
</li>
<li>
<a href="./../../core.base_rup/capabilitypatterns/rup_deployment_model_45605F50.html" guid="_COWYuBi2Edq_uI8xTPML6g">部署模型</a>
</li>
<li>
<a href="./../../core.base_rup/capabilitypatterns/rup_implementation_model_3E975376.html" guid="_COWYuhi2Edq_uI8xTPML6g">实施模型</a>
</li>
</ul>
</td><td class="sectionTableCell"><span class="sectionTableCellHeading">外部:
								</span>
<ul>
<li>无</li>
</ul>
</td>
</tr>
<tr valign="top">
<th scope="row" class="sectionTableHeading">输出</th><td colspan="3" class="sectionTableCell">
<ul>
<li>
<a href="./../../core.base_rup/capabilitypatterns/rup_software_architecture_document_7A057157.html" guid="_COWYthi2Edq_uI8xTPML6g">软件体系结构文档</a>
</li>
<li>
<a href="./../../core.base_rup/capabilitypatterns/rup_implementation_model_3E975376.html" guid="_COWYuhi2Edq_uI8xTPML6g">实施模型</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">步骤</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr>
<td class="sectionTableCell">
<div class="stepHeading"> 建立实施模型结构</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><a id="Establish the Implementation Model Structure" name="Establish the Implementation Model Structure"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>目的</b>
            </td>
            <td width="95%">
                建立实施模型的结构。&nbsp;
            </td>
        </tr>
    </table><br />
</div>
<p>
    在从“设计空间”向“实施空间”移动的过程中，首先在实施模型中制作设计模型结构的镜像。
</p>
<p>
    设计包将会有相应的实施子系统，这些实施子系统将包含实施相应设计元素所需的一个或多个目录和文件（工件：实施元素）。从设计模型到实施模型的映射可能会随着每个实施子系统分配到体系结构中的特定层而发生变化。
</p>
<p>
    创建一个图，以代表实施模型结构（请参阅“指南：实施图”）。
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> 调整实施子系统</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><a id="Adjust Subsystems" name="Adjust Subsystems"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>目的</b>
            </td>
            <td width="95%">
                调整模型的结构，以反映团队组织或实施语言约束。&nbsp;
            </td>
        </tr>
    </table><br />
</div>
<p>
    通过处理与实施环境相关的较小策略问题，决定子系统的组织是否需要更改。下面是这种策略问题的一些示例。请注意，如果您决定更改实施子系统的组织，就必须决定是否应转而更新设计模型，或者允许设计模型不同于实施模型。
</p>
<ul>
    <li>
        <b>开发团队组织</b>。子系统结构必须允许几个实施者或数个实施团队并行前进，而不会有过多的重叠和不安情况。建议每个实施子系统只归一个团队负责。这意味着您可能会希望将一个子系统分成两个（如果很大），并将两部分分派给两个实施者或两个实施团队来实施，特别是在这两个实施者（或实施团队）有不同的工作版本／发行版周期的情况下。
    </li>
    <li>
        <b>类型的声明</b>。在实施过程中，您可能会意识到，一个子系统需要从另一个子系统导入工作产品，因为类型是在该子系统中声明的。通常，当您使用类型化的编程语言（如 C++、Java 和
        Ada）时，就会发生这种情况。在这种情况下，以及一般情况下，将类型声明抽取到单独的子系统中可能是个好想法。
    </li>
</ul>
<p class="exampleheading">
    示例
</p>
<p class="example">
    您将一些类型声明从<b>子系统 D</b> 抽取到新的子系统类型中，形成了独立于<b>子系统 D</b> 中公用（可视）工作产品的更改的<b>子系统 A</b>。
</p>
<p align="center">
    <img src="./../../core.base_rup/tasks/resources/ac_stri1.gif" alt="类型声明子系统抽取图" width="567" height="207" />
</p>
<p class="picturetext">
    类型声明是从子系统 D 中抽取的
</p>
<p>
    .
</p>
<ul>
    <li>
        <b>现有的旧代码和组件系统。</b>您可能需要并入旧代码、可重用组件库或者现成产品。如果这些尚未在设计中建模，则必须添加实施子系统。
    </li>
    <li>
        <b>调整依赖关系。</b>假设子系统 A 和子系统 B 相互之间有导入依赖关系。但是，您可能希望让 B 较少依赖于子系统 A 中的更改。抽取 B 导入的 A 的工作产品，并放到较低层的新实施子系统 A1 中。
    </li>
</ul>
<p align="center">
    <img src="./../../core.base_rup/tasks/resources/ac_stri2.gif" alt="工件分组传送图样本" width="403" height="106" />
</p>
<p class="picturetext">
    工作产品从子系统 A 中抽取，并放到新的子系统 A1 中。
</p>
<p>
    现在因为实施子系统不再对设计模型中的包／子系统进行一对一映射，您可以在设计模型中作出相应的更改（如果您已决定使设计模型与实施模型保持高度一致），或者可以跟踪实施和设计模型之间的映射（例如通过可跟踪性或实现依赖关系）。这样的映射是否完成以及如何完成，这是一个应记录在<img alt="" src="./../../images/no_rup.gif">&#160;<a class="elementLinkWithUserText" href="./../../pages_not_installed/pages_not_installed.html" guid="{E5501201-7EE6-4243-AE91-73880FF76FC1}">工作产品：特定于项目的指南</a>中的流程决策。
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> 为每个实施子系统定义导入</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><a id="Define Imports for Each Subsystem" name="Define Imports for Each Subsystem"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>目的</b>
            </td>
            <td width="95%">
                定义子系统之间的依赖关系。&nbsp;
            </td>
        </tr>
    </table><br />
</div>
<p>
    为每个子系统定义它导入的其他子系统。这可以对整套子系统完成，使同一层中的所有子系统都可以导入更下一层的所有子系统。一般而言，实施模型中的依赖关系将反映设计模型中的依赖关系，例外情况是实施模型的结构的已调整部分（请参阅<a href="#Adjust Subsystems">调整实施子系统</a>）。
</p>
<p>
    在组件图中展示分层的子系统结构。
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> 决定如何处理可执行程序（以及其他派生对象）</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><a id="Decide how to treat executable programs (and other derived objects)" name="Decide how to treat executable programs (and other derived objects)"></a>
<p>
    可执行对象（以及其他派生对象）是将构建流程应用于实施子系统（或多个子系统）或其部件的结果，因此在逻辑上属于实施子系统。 但是，软件设计人员与配置经理合作时需要决定将应用于实施模型的配置项结构。&nbsp;
</p>
<p>
    为了便于选择和引用（特别是部署的选择和引用），缺省的建议是定义单独的配置项来包含可部署的几组可执行程序（关于哪些可执行程序部署在哪些节点上，这是记录在<a class="elementLinkWithUserText" href="./../../core.base_rup/workproducts/rup_deployment_model_57DF1DF5.html" guid="{5981B6BE-2FD1-4984-AA94-2F7428439BA6}">部署模型</a>中的）。因此，在简单的情况下，对于每个实施子系统，可部署的可执行程序都会有一个配置项，并有一个配置项包含用来生成这些对象的来源等等。可将实施子系统看作是由包含这些配置项（可能还有其他配置项，如测试资产）的组合配置项来表示的。
</p>
<p>
    从建模的观点来看，由构建流程生成的可执行程序集合可以表示为一个<a class="elementLinkWithUserText" href="./../../core.base_rup/workproducts/rup_build_BA336272.html" guid="{53728CD9-FA47-4B58-A443-E9F9DC196916}">工作产品：工作版本</a>（是一个包），它包含在相关联的实施子系统（本身是一个包）中。&nbsp;&nbsp;
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> 决定如何处理测试资产</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><a id="Decide how to treat test assets" name="Decide how to treat test assets"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>目的</b>
            </td>
            <td width="95%">
                将测试工作产品添加到实施模型中。&nbsp;
            </td>
        </tr>
    </table><br />
</div>
<p>
    一般而言，测试工作产品和测试子系统在 Rational Unified Process
    中的处理与其他开发的软件并没有很大的不同。但是，测试工作产品和子系统通常不是部署的系统的一部分，而且常常不可交付给客户。因此，缺省的建议是让测试资产与测试目标相一致（例如，实施元素用于单元测试、实施子系统用于集成测试、系统用于系统测试），但如果项目存储库组织为一组目录或者目录层次结构，就要把测试资产放在（例如）单独的测试目录中。独特的测试子系统（用于单元测试级以上的测试）应该与其他实施子系统同样处理
    － 作为独特的配置项。
</p>
<p>
    对于建模，一个测试工作产品集合可以表示为一个<a class="elementLinkWithUserText" href="./../../core.base_rup/workproducts/rup_implementation_subsystem_118747E9.html" guid="{0F629848-C19E-49AB-A6C1-C8D6A094898A}">工作产品：实施子系统</a>（一个包）。对于单元测试，这样的测试子系统正常情况下会包含在相关联的（经测试的）实施子系统中。软件设计人员在向配置经理咨询之后，应决定该级别的测试工作产品应与他们测试的实施元素一起配置，还是作为单独的配置项进行配置。对于集成和系统测试，测试子系统可能是测试中的实施子系统的同级。
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> 更新实施视图</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><a id="XE_implementation_view__updating" name="XE_implementation_view__updating" class="index" key="实施视图（implementation view）" text="更新"></a><a id="Update the Implementation View" name="Update the Implementation View"></a>
<div align="left">
    <table border="1" width="100%" cellspacing="0" cellpadding="4" style="border: 1px solid rgb(128,128,128)"     bordercolorlight="#808080" bordercolordark="#808080">
        <tr>
            <td width="5%">
                <b>目的</b>
            </td>
            <td width="95%">
                更新软件体系结构文档的实施视图。&nbsp;
            </td>
        </tr>
    </table><br />
</div>
<p>
    实施视图在<a class="elementLinkWithUserText" href="./../../core.base_rup/workproducts/rup_software_architecture_document_C367485C.html" guid="{6F49641A-ED10-47B5-9E5D-3F90A6BF3006}">软件体系结构文档</a>中有所描述。该部分包含的组件图显示了各层和实施子系统在各层的分配情况，以及子系统之间的导入依赖关系。
</p></td>
</tr>
</table>
</div>
<div class="stepHeading"> 评估实施模型</div>
<div class="stepContent">
<table cellpadding="0" cellspacing="0" border="0" class="stepTable">
<tr valign="top">
<td><a id="Evaluate the implementation model" name="Evaluate the implementation model"></a>
<p>
    请参阅<a class="elementLinkWithUserText" href="./../../core.base_rup/guidances/checklists/implementation_model_DD65F54E.html" guid="2.400665964241535E-305">核对表：实施模型</a>。
</p>&nbsp; <br />
<br /></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">属性</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr valign="top">
<th scope="row" class="sectionTableHeading" id="property_多次出现" abbr="多次出现">多次出现</th><td align="left" class="sectionTableCell" headers="property_多次出现"><img title="" alt="" height="15" width="20" src="./../../images/indent.gif"></td>
</tr>
<tr valign="top">
<th scope="row" class="sectionTableHeading" id="property_事件驱动" abbr="事件驱动">事件驱动</th><td align="left" class="sectionTableCell" headers="property_事件驱动"><img title="" alt="" height="15" width="20" src="./../../images/indent.gif"></td>
</tr>
<tr valign="top">
<th scope="row" class="sectionTableHeading" id="property_正在进行" abbr="正在进行">正在进行</th><td align="left" class="sectionTableCell" headers="property_正在进行"><img title="" alt="" height="15" width="20" src="./../../images/indent.gif"></td>
</tr>
<tr valign="top">
<th scope="row" class="sectionTableHeading" id="property_可选" abbr="可选">可选</th><td align="left" class="sectionTableCell" headers="property_可选"><img title="" alt="" height="15" width="20" src="./../../images/indent.gif"></td>
</tr>
<tr valign="top">
<th scope="row" class="sectionTableHeading" id="property_已计划" abbr="已计划">已计划</th><td align="left" class="sectionTableCell" headers="property_已计划"><img title="" alt="" height="15" width="20" src="./../../images/indent.gif"></td>
</tr>
<tr valign="top">
<th scope="row" class="sectionTableHeading" id="property_可重复" abbr="可重复">可重复</th><td align="left" class="sectionTableCell" headers="property_可重复"><img title="" alt="" height="15" width="20" src="./../../images/indent.gif"></td>
</tr>
</table>
</div>
<div class="sectionHeading">更多信息</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr valign="top">
<th scope="row" class="sectionTableHeading">工具向导</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../core.base_rup/guidances/toolmentors/structure_impl_model_D03711A8.html" guid="{AE16EC14-5366-4CFD-A207-14F352D1B3E3}">使用 Rational Rose 构造实施模型</a>
</li>
<li>
<a href="./../../core.base_rup/guidances/toolmentors/setup_implementation_model_40C73358.html" guid="{FEEAA9AD-2CEE-41C6-BD6C-BBF14CA205A5}">使用 Rational ClearCase 设置实施模型</a>
</li>
<li>
<a href="./../../core.base_rup/guidances/toolmentors/setting_up_impl_model_with_ucm_C9DD9D5A.html" guid="{10964F4E-39B2-4D34-9A75-3B6360B47C2B}">使用 Rational ClearCase 通过 UCM 设置实施模型</a>
</li>
<li>
<a href="./../../core.base_rup/guidances/toolmentors/structuring_the_implementation_model_63DD71E7.html" guid="{ED12F411-0BE2-4A9D-AF41-07329966116F}">使用 Rational XDE Developer 构造实施模型</a>
</li>
<li>
<a href="./../../core.base_rup/guidances/toolmentors/setting_up_for_project_637A2D05.html" guid="{F4DEA91A-7EBD-4853-8517-ACB4ED6FD5AD}">为项目设置 Rational Rose</a>
</li>
<li>
<a href="./../../core.base_rup/guidances/toolmentors/accessing_clearcase_3570C723.html" guid="{B67E317F-3C7C-4377-9F44-E9B38321C3F1}">从 Rational Rose 访问 Rational ClearCase</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<table cellpadding="0" cellspacing="0" border="0" class="copyright">
<tr>
<td class="copyright"><p>
    &copy; &nbsp;Copyright IBM Corp.&nbsp;1987, 2006. &nbsp;All Rights Reserved.
</p></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
					contentPage.onload();
					contentPage.processPage.fixDescriptorLinks();
				</script>
</html>
